package done.easy_201_300;

import org.junit.Test;

import static com.study.util.LogUtil.info;

/**
 * 242. Valid Anagram 有效的字母异位词
 * <p>
 * 给定两个字符串 s 和 t ，编写一个函数来判断 t 是否是 s 的一个字母异位词。
 * <p>
 * 示例 1:
 * 输入: s = "anagram", t = "nagaram"
 * 输出: true
 * <p>
 * 示例 2:
 * 输入: s = "rat", t = "car"
 * 输出: false
 *
 * @author 大硕
 * 2019-04-13 7:56 AM
 **/
@SuppressWarnings("all")
public class ValidAnagram {

    public boolean isAnagram(String s, String t) {
        // 190413 first
        return false;
    }

    @Test
    public void test() {
        String s = "anagram", t = "nagaram";
        info("true -> {}", isAnagram(s, t));

        String s1 = "rat", t1 = "car";
        info("false -> {}", isAnagram(s1, t1));
    }
}















































/*
public boolean isAnagram_1(String s, String t) {
    char[] sChars = s.toCharArray();
    char[] tChars = t.toCharArray();
    Arrays.sort(sChars);
    Arrays.sort(tChars);
    return String.valueOf(sChars).equals(String.valueOf(tChars));
}

public boolean isAnagram_2(String s, String t) {
    Map<Character, Integer> map = new HashMap<>();
    for (char ch : s.toCharArray()) {
        map.put(ch, map.getOrDefault(ch, 0) + 1);
    }
    for (char ch : t.toCharArray()) {
        Integer count = map.get(ch);
        if (count == null) {
            return false;
        } else if (count > 1) {
            map.put(ch, count - 1);
        } else {
            map.remove(ch);
        }
    }
    return map.isEmpty();
}

public boolean isAnagram(String s, String t) {
    // NO.1 26个字符的计数器
    int[] sCounts = new int[26];
    int[] tCounts = new int[26];

    // NO.2 分析 s 记录计数器
    for (char ch : s.toCharArray()) {
        sCounts[ch - 'a']++;
    }

    // NO.3 分析 t 记录计数器
    for (char ch : t.toCharArray()) {
        tCounts[ch - 'a']++;
    }

    // NO.4 对比两个计数器，不相等代表有差距
    for (int i = 0; i < 26; i++) {
        if (sCounts[i] != tCounts[i]) {
            return false;
        }
    }
    return true;
}
*/
